package com.yunji.aggregate.mapper;

import com.yunji.aggregate.model.dto.container.CabinetParam;
import com.yunji.aggregate.model.dto.container.CabinetTemplateParams;
import com.yunji.aggregate.model.vo.container.*;
import com.yunji.common.annotation.DataScope;
import com.yunji.common.constant.PermissionTypeConstant;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface IContainerAggregateMapper {
    List<CabinetTemplateVO> searchTemplateVOList(CabinetTemplateParams params);

    CabinetTemplateVO selectTemplateVO(Long templateId);

    List<CabinetTemplateCellVO> searchCabinetTemplateCellList(@Param("belongId") Long belongId, @Param("templateIds") List<Long> templateIds);

    @DataScope(scopeTables = {"t_container"})
    List<CabinetStatisticsVO> searchCabinetList(CabinetParam param);

    List<CabinetCellStatisticsVO> selectCells(@Param("ids") List<Long> cabinetIds);

    List<CabinetCellStatisticsVO> searchCells(@Param("belongId") Long belongId,@Param("cabinetId") Long cabinetId);

    CabinetStatisticsVO selectCabinet(CabinetParam param);

    List<CabinetViewVO> viewContainerList(CabinetParam param);

    @DataScope
    List<SpecificCabinetVO> cabinetSpecificSearch(CabinetParam param);

    String selectTypeCodeByQrcode(String qrcode);
}
